package com.zenithmind.version.service;

import com.zenithmind.common.result.PageResult;
import com.zenithmind.version.pojo.vo.RepositoryVO;

import java.util.List;

/**
 * 仓库查询服务接口 - 遵循接口隔离原则，专门处理仓库查询操作
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
public interface RepositoryQueryService {

    /**
     * 分页查询仓库列表
     * 
     * @param current 当前页
     * @param size 页大小
     * @param ownerId 所有者ID
     * @param type 仓库类型
     * @param status 仓库状态
     * @param keyword 关键词
     * @return 分页结果
     */
    PageResult<RepositoryVO> getRepositoryPage(Long current, Long size,
                                              String ownerId, Integer type,
                                              Integer status, String keyword);

    /**
     * 查询用户的仓库列表
     * 
     * @param userId 用户ID
     * @param type 仓库类型
     * @return 仓库列表
     */
    List<RepositoryVO> getUserRepositories(String userId, Integer type);

    /**
     * 查询公开仓库列表
     * 
     * @param keyword 关键词
     * @param language 编程语言
     * @param limit 限制数量
     * @return 仓库列表
     */
    List<RepositoryVO> getPublicRepositories(String keyword, String language, Integer limit);

    /**
     * 搜索仓库
     * 
     * @param keyword 关键词
     * @param type 仓库类型
     * @param language 编程语言
     * @param limit 限制数量
     * @return 仓库列表
     */
    List<RepositoryVO> searchRepositories(String keyword, Integer type, String language, Integer limit);
}
